home *** CD-ROM | disk | FTP | other *** search
- unit uInfoView;
-
- {
- *******************************************************************************
- * Descriptions: Phone Info view implementation
- * $Source: /cvsroot/fma/fma/uInfoView.pas,v $
- * $Locker: $
- *
- * Todo:
- *
- * Change Log:
- * $Log: uInfoView.pas,v $
- * Revision 1.19 2004/06/23 13:50:19 z_stoichev
- * Added Chat support
- * Added More hyperlinks
- * Check archive for new messages
- *
- * Revision 1.18 2004/06/21 09:46:13 z_stoichev
- * Added open/close buttons.
- * Custom splitter painting.
- *
- * Revision 1.17 2004/06/19 11:17:11 z_stoichev
- * - Fixed Fma Today panel constraints.
- * - Added Fma Today cotext popup menu.
- * - Changed Fma Today calls popup menu.
- * - Changed Fma Today page hides explorer.
- *
- * Revision 1.16 2004/06/18 13:50:19 z_stoichev
- * - Changed Fma Today hyperlinks buttons.
- * - Fixed Fma Today page background color.
- * - Added Fma Today page vertical splitters.
- *
- * Revision 1.15 2004/06/15 13:03:27 z_stoichev
- * Missed calls fixes.
- *
- * Revision 1.14 2004/06/11 12:28:18 z_stoichev
- * Fixed horizontal splitter on resize update.
- *
- * Revision 1.13 2004/05/21 12:02:16 z_stoichev
- * Split vertically Fma Today page
- * Activity Log has been removed.
- *
- * Revision 1.12 2004/05/21 10:09:03 z_stoichev
- * Changed logging handle routines.
- *
- * Revision 1.11 2004/05/19 18:34:16 z_stoichev
- * Build 0.1.0.35c
- *
- * Revision 1.10 2004/04/01 15:30:28 z_stoichev
- * New Calls data format support
- *
- * Revision 1.9 2004/03/28 22:12:06 z_stoichev
- * added some more link buttons
- *
- * Revision 1.8 2004/03/26 18:37:39 z_stoichev
- * Build 0.1.0.35 RC5
- *
- * Revision 1.7 2003/12/12 16:57:18 z_stoichev
- * Changed diagram: dont scroll with mouse, show legend when wide.
- *
- * Revision 1.6 2003/11/28 09:38:07 z_stoichev
- * Merged with branch-release-1-1 (Fma 0.10.28c)
- *
- * Revision 1.5.2.5 2003/11/11 18:11:45 z_stoichev
- * GUI changes. add methods to manipulate GUI.
- *
- * Revision 1.5.2.4 2003/11/10 14:03:09 z_stoichev
- * RC3
- *
- * Revision 1.5.2.3 2003/10/30 13:29:52 z_stoichev
- * Unicode support in Activity log.
- * GUI changes.
- *
- * Revision 1.5.2.2 2003/10/28 10:15:35 z_stoichev
- * Always show memo last line.
- *
- * Revision 1.5.2.1 2003/10/27 07:22:54 z_stoichev
- * Build 0.1.0 RC1 Initial Checkin.
- *
- * Revision 1.5 2003/10/24 12:35:38 z_stoichev
- * Added connection commands log.
- *
- * Revision 1.4 2003/10/16 15:29:04 z_stoichev
- * Diagram settigs changed alot.
- * Now diagram shows last 1 minute of statistics.
- * Charge is shown on battery's axe, because
- * they have similar values.
- *
- * Revision 1.3 2003/01/30 04:15:57 warren00
- * Updated with header comments
- *
- *
- *******************************************************************************
- }
-
- interface
-
- uses
- Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
- StdCtrls, ExtCtrls, TeEngine, Series, TeeProcs, Chart, ComCtrls,
- TntStdCtrls, ImgList, jpeg, Buttons, LMDControl, LMDBaseControl,
- LMDBaseGraphicControl, LMDGraphicControl, LMDBaseMeter,
- LMDCustomProgressFill, LMDProgressFill, TntComCtrls, LMDFill, Menus;
-
- type
- TfrmInfoView = class(TFrame)
- Panel1: TPanel;
- Panel2: TPanel;
- TodayCaptionPanel: TPanel;
- wOperator: TLabel;
- wSignal: TLabel;
- Image2: TImage;
- wDate: TTntLabel;
- Label9: TLabel;
- Image1: TImage;
- LMDFill2: TLMDFill;
- DiagramPanel: TPanel;
- Chart1: TChart;
- Series1: TLineSeries;
- Series3: TLineSeries;
- Series2: TLineSeries;
- PopupMenu2: TPopupMenu;
- CallContact1: TMenuItem;
- MessageContact1: TMenuItem;
- Splitter1: TSplitter;
- InboxPanel: TPanel;
- Label17: TLabel;
- Label10: TLabel;
- Bevel2: TBevel;
- Image3: TImage;
- Label11: TLabel;
- wInboxNew: TLabel;
- CallsPanel: TPanel;
- Label15: TLabel;
- Label21: TLabel;
- Bevel4: TBevel;
- Image5: TImage;
- Label22: TLabel;
- wRecentCallsNum: TTntLabel;
- lvCalls: TTntListView;
- BatteryPanel: TPanel;
- Label26: TLabel;
- Label27: TLabel;
- Bevel6: TBevel;
- Image7: TImage;
- Label5: TLabel;
- Label3: TLabel;
- Label2: TLabel;
- Label4: TLabel;
- Label7: TLabel;
- Label1: TLabel;
- Label28: TLabel;
- Label29: TLabel;
- Label8: TLabel;
- Label35: TLabel;
- wCharge: TLabel;
- lblTimeLeft: TLabel;
- wBattery: TLabel;
- lbPower: TLabel;
- lbvbat: TLabel;
- lbdcio: TLabel;
- lbcyclescharge: TLabel;
- lbicharge: TLabel;
- lbiphone: TLabel;
- lbtempbatt: TLabel;
- Splitter2: TSplitter;
- Splitter3: TSplitter;
- linkGetMessages: TLabel;
- linkJumpInbox: TLabel;
- linkJumpArchive: TLabel;
- OuboxPanel: TPanel;
- Label18: TLabel;
- Label19: TLabel;
- Bevel3: TBevel;
- Image4: TImage;
- Label20: TLabel;
- wOutboxNew: TLabel;
- MissedCallsPanel: TPanel;
- lvMissed: TTntListView;
- Label24: TLabel;
- Label25: TLabel;
- Label23: TLabel;
- Image6: TImage;
- wMissedCallsNum: TLabel;
- Bevel5: TBevel;
- PhoneAddressPanel: TPanel;
- BigImage: TImage;
- Label30: TLabel;
- Label31: TLabel;
- Bevel7: TBevel;
- Image8: TImage;
- Label6: TLabel;
- Label12: TLabel;
- Label13: TLabel;
- Label16: TLabel;
- Label14: TLabel;
- lbSerialNumber: TLabel;
- lbSWRevision: TLabel;
- lbModel: TLabel;
- lbManufacturer: TLabel;
- lbtempphone: TLabel;
- Splitter4: TSplitter;
- Splitter5: TSplitter;
- linkComposeMessage: TLabel;
- linkSendMessages: TLabel;
- linkShowNewMessages: TLabel;
- Label32: TLabel;
- Label33: TLabel;
- Image9: TImage;
- Label34: TLabel;
- Bevel1: TBevel;
- linkSyncPhonebook: TLabel;
- linkNewContact: TLabel;
- linkShowPhonebook: TLabel;
- wMENum: TLabel;
- AddToPhonebook1: TMenuItem;
- N1: TMenuItem;
- N2: TMenuItem;
- Refresh1: TMenuItem;
- N3: TMenuItem;
- Properties1: TMenuItem;
- Image10: TImage;
- Image11: TImage;
- Image12: TImage;
- Image13: TImage;
- Image14: TImage;
- Image15: TImage;
- ImageList1: TImageList;
- linkJumpOutbox: TLabel;
- linkShowSIM: TLabel;
- ChatContact1: TMenuItem;
- procedure ListViewResize(Sender: TObject);
- procedure ListViewCompare(Sender: TObject; Item1, Item2: TListItem;
- Data: Integer; var Compare: Integer);
- procedure spMissedClick(Sender: TObject);
- procedure sbCheckInboxClick(Sender: TObject);
- procedure FrameResize(Sender: TObject);
- procedure linkGetMessagesClick(Sender: TObject);
- procedure linkJumpMsgFolderClick(Sender: TObject);
- procedure linkComposeMessageClick(Sender: TObject);
- procedure linkSendMessagesClick(Sender: TObject);
- procedure linkSyncPhonebookClick(Sender: TObject);
- procedure linkShowPhonebookClick(Sender: TObject);
- procedure linkNewContactClick(Sender: TObject);
- procedure Refresh1Click(Sender: TObject);
- procedure PopupMenu2Popup(Sender: TObject);
- procedure Properties1Click(Sender: TObject);
- procedure SplitterPaint(Sender: TObject);
- procedure OpenCloseImageClick(Sender: TObject);
- procedure linkShowSIMClick(Sender: TObject);
- private
- { Private declarations }
- public
- { Public declarations }
- procedure GetIdent;
- procedure UpdateWelcomePage(Init: boolean = False);
- end;
-
- implementation
-
- uses uGlobal, Unit1, uMissedCalls, uCalling, uSyncPhonebook, uComposeSMS;
-
- {$R *.dfm}
-
- { TfrmInfoView }
-
- procedure TfrmInfoView.GetIdent;
- begin
- try
- Form1.TxAndWait('AT+CGMI');
- lbManufacturer.Caption := Form1.FRxBuffer[0];
- except
- lbManufacturer.Caption := '?';
- end;
-
- try
- Form1.TxAndWait('AT+CGMM');
- lbModel.Caption := Form1.FRxBuffer[0];
- except
- lbModel.Caption := '?';
- end;
-
- try
- Form1.TxAndWait('AT+CGMR');
- lbSWRevision.Caption := Form1.FRxBuffer[0];
- except
- lbSWRevision.Caption := '?';
- end;
-
- try
- Form1.TxAndWait('AT+CGSN');
- lbSerialNumber.Caption := Form1.FRxBuffer[0];
- except
- lbSerialNumber.Caption := '?';
- end;
- end;
-
- procedure TfrmInfoView.UpdateWelcomePage(Init: boolean);
- var
- i: integer;
- s: string;
- begin
- TodayCaptionPanel.Visible := Form1.FShowTodayCaption;
- { Signal and Power }
- if Form1.FConnectingComplete then begin
- wSignal.Caption := IntToStr(Form1.pbRSSI.Position)+'%';
- wBattery.Caption := IntToStr(Form1.pbPower.Position)+'%';
- if Form1.FBatteryLow then
- wBattery.Font.Color := clRed
- else
- wBattery.ParentFont := True;
- end
- else begin
- wSignal.Caption := '?';
- wBattery.Caption := '?';
- wCharge.Caption := '?';
- end;
- if Form1.FOnACPower then wCharge.Caption := 'yes'
- else wCharge.Caption := 'no';
- { Inbox and Outbox }
- i := Form1.GetNewMessagesCounter(Form1.FNodeMsgInbox) +
- Form1.GetNewMessagesCounter(Form1.FNodeMsgArchive);
- if i <> 0 then begin
- wInboxNew.Caption := IntToStr(i);
- wInboxNew.Font.Style := wInboxNew.Font.Style + [fsBold];
- wInboxNew.Font.Color := clRed;
- linkShowNewMessages.Enabled := True;
- end
- else begin
- wInboxNew.Caption := 'none';
- wInboxNew.ParentFont := True;
- linkShowNewMessages.Enabled := False;
- end;
- i := Form1.GetNewMessagesCounter(Form1.FNodeMsgOutbox);
- if i <> 0 then begin
- wOutboxNew.Caption := IntToStr(i);
- wOutboxNew.Font.Style := wInboxNew.Font.Style + [fsBold];
- wOutboxNew.Font.Color := clRed;
- linkSendMessages.Enabled := True;
- end
- else begin
- wOutboxNew.Caption := 'none';
- wOutboxNew.ParentFont := True;
- linkSendMessages.Enabled := False;
- end;
- { Calls }
- if Form1.ActionMissedCalls.Enabled and (frmMissedCalls <> nil) and (frmMissedCalls.RecentMissedCalls <> 0) then begin
- i := frmMissedCalls.RecentMissedCalls;
- wMissedCallsNum.Caption := IntToStr(i);
- wMissedCallsNum.Font.Style := wMissedCallsNum.Font.Style + [fsBold];
- wMissedCallsNum.Font.Color := clRed;
- end
- else begin
- wMissedCallsNum.Caption := 'none';
- wMissedCallsNum.ParentFont := True;
- end;
- { Address book }
- wMENum.Caption := IntToStr(Form1.FNodeContactsME.Count);
- { Initial update when Welcome page is shown }
- if Form1.FShowDiagram and Form1.CanUseEBCA(True) then DiagramPanel.Height := Chart1.Height + 9
- else DiagramPanel.Height := 0;
- if Init then begin
- linkJumpArchive.Left := linkJumpInbox.Left + linkJumpInbox.Width + 8;
- linkGetMessages.Left := linkJumpArchive.Left + linkJumpArchive.Width + 8;
- linkJumpOutbox.Left := linkComposeMessage.Left + linkComposeMessage.Width + 8;
- linkShowPhonebook.Left := linkNewContact.Left + linkNewContact.Width + 8;
- linkShowSIM.Left := linkShowPhonebook.Left + linkShowPhonebook.Width + 8;
- { Date and Operator }
- wDate.Caption := FormatDateTime(LongDateFormat,Date);
- s := Form1.FSelOperator;
- if s = '' then s := '?';
- wOperator.Caption := s;
- //if Form1.Visible and Visible then
- try
- { Calls }
- lvCalls.Items.BeginUpdate;
- try
- lvCalls.Clear;
- for i := 0 to Form1.FNodeCallsIn.Count-1 do
- with lvCalls.Items.Add do begin
- ImageIndex := Form1.FNodeCallsIn.Item[i].ImageIndex;
- s := TStrings(Form1.FNodeCallsIn.Data)[Form1.FNodeCallsIn.Item[i].StateIndex-1];
- Caption := GetToken(s,0);
- SubItems.Add(GetToken(s,1));
- end;
- for i := 0 to Form1.FNodeCallsOut.Count-1 do
- with lvCalls.Items.Add do begin
- ImageIndex := Form1.FNodeCallsOut.Item[i].ImageIndex;
- s := TStrings(Form1.FNodeCallsOut.Data)[Form1.FNodeCallsOut.Item[i].StateIndex-1];
- Caption := GetToken(s,0);
- SubItems.Add(GetToken(s,1));
- end;
- wRecentCallsNum.Caption := IntToStr(lvCalls.Items.Count);
- finally
- lvCalls.AlphaSort;
- lvCalls.Items.EndUpdate;
- end;
- lvMissed.Items.BeginUpdate;
- try
- lvMissed.Clear;
- for i := 0 to Form1.FNodeCallsMissed.Count-1 do
- with lvMissed.Items.Add do begin
- ImageIndex := Form1.FNodeCallsMissed.Item[i].ImageIndex;
- s := TStrings(Form1.FNodeCallsMissed.Data)[Form1.FNodeCallsMissed.Item[i].StateIndex-1];
- Caption := GetToken(s,0);
- SubItems.Add(GetToken(s,1));
- end;
- finally
- lvMissed.AlphaSort;
- lvMissed.Items.EndUpdate;
- end;
- except
- end;
- end;
- end;
-
- procedure TfrmInfoView.ListViewResize(Sender: TObject);
- begin
- with Sender as TTntListView do begin
- Items.BeginUpdate;
- Columns[1].Width := 100;
- Columns[0].Width := Width - Columns[1].Width - 24;
- Columns[0].Width := Columns[0].Width - 1;
- Items.EndUpdate;
- end;
- end;
-
- procedure TfrmInfoView.ListViewCompare(Sender: TObject; Item1,
- Item2: TListItem; Data: Integer; var Compare: Integer);
- begin
- { Show recent first }
- Compare := CompareStr(Item2.SubItems[0],Item1.SubItems[0]);
- end;
-
- procedure TfrmInfoView.spMissedClick(Sender: TObject);
- begin
- Form1.ActionMissedCalls.Execute;
- end;
-
- procedure TfrmInfoView.sbCheckInboxClick(Sender: TObject);
- begin
- Form1.ActionSMSDownloadInbox.Execute;
- end;
-
- procedure TfrmInfoView.FrameResize(Sender: TObject);
- begin
- Panel1.Width := Width div 2;
- end;
-
- procedure TfrmInfoView.linkGetMessagesClick(Sender: TObject);
- begin
- Form1.ActionSMSDownloadInbox.Execute;
- end;
-
- procedure TfrmInfoView.linkJumpMsgFolderClick(Sender: TObject);
- begin
- if Sender = linkJumpOutbox then
- Form1.Explorer.Selected := Form1.FNodeMsgOutbox
- else
- if Sender = linkJumpInbox then
- Form1.Explorer.Selected := Form1.FNodeMsgInbox
- else
- if Sender = linkJumpArchive then
- Form1.Explorer.Selected := Form1.FNodeMsgArchive
- else
- if Sender = linkShowNewMessages then
- if Form1.GetNewMessagesCounter(Form1.FNodeMsgInbox) <> 0 then
- Form1.Explorer.Selected := Form1.FNodeMsgInbox
- else
- Form1.Explorer.Selected := Form1.FNodeMsgArchive;
- end;
-
- procedure TfrmInfoView.linkComposeMessageClick(Sender: TObject);
- begin
- Form1.ActionSMSNewMsg.Execute;
- end;
-
- procedure TfrmInfoView.linkSendMessagesClick(Sender: TObject);
- begin
- Form1.ActionConnectionSendOutboxMsgs.Execute;
- end;
-
- procedure TfrmInfoView.linkSyncPhonebookClick(Sender: TObject);
- begin
- Form1.ActionSyncPhonebook.Execute;
- end;
-
- procedure TfrmInfoView.linkShowPhonebookClick(Sender: TObject);
- begin
- Form1.Explorer.Selected := Form1.FNodeContactsME;
- end;
-
- procedure TfrmInfoView.linkNewContactClick(Sender: TObject);
- begin
- if Form1.frmSyncPhonebook.DoEdit(True) then
- UpdateWelcomePage;
- end;
-
- procedure TfrmInfoView.Refresh1Click(Sender: TObject);
- begin
- if Screen.ActiveControl = lvCalls then begin
- Form1.InitCalls(Form1.fnodecallsIn);
- UpdateWelcomePage(True);
- Form1.InitCalls(Form1.fnodecallsOut);
- UpdateWelcomePage(True);
- end;
- if Screen.ActiveControl = lvMissed then begin
- Form1.InitCalls(Form1.fnodecallsMissed);
- UpdateWelcomePage(True);
- end;
- end;
-
- procedure TfrmInfoView.PopupMenu2Popup(Sender: TObject);
- var
- contact: PContactData;
- begin
- Refresh1.Enabled := Form1.FConnected and not Form1.FObex.Connected;
- Properties1.Enabled := Form1.IsContactNumberSelected and
- (Form1.frmSyncPhonebook.FindContact(Form1.LookupContact(
- Form1.ExtractNumber(Form1.LocateSelContactNumber)),contact));
- end;
-
- procedure TfrmInfoView.Properties1Click(Sender: TObject);
- var
- contact: PContactData;
- begin
- if Form1.frmSyncPhonebook.FindContact(Form1.LookupContact(
- Form1.ExtractNumber(Form1.LocateSelContactNumber)),contact) then
- with Form1.frmSyncPhonebook do begin
- SelContact := contact;
- if DoEdit then UpdateWelcomePage(True);
- end;
- end;
-
- procedure TfrmInfoView.SplitterPaint(Sender: TObject);
- var
- R: TRect;
- i,j: integer;
- begin
- with (Sender as TSplitter) do begin
- R := ClientRect;
- with Canvas do begin
- Pen.Color := $00E0F0E0;
- Pen.Style := psDot;
- Brush.Color := Color;
- Brush.Style := bsSolid;
- FillRect(R);
- i := Abs(R.Right - R.Left);
- j := Abs(R.Bottom - R.Top);
- if i < j then begin // vertical
- R.Top := R.Top + j div 2 - 31;
- R.Bottom := R.Bottom - j div 2 + 31;
- i := R.Left + i div 2;
- MoveTo(i-1,R.Top);
- LineTo(i-1,R.Bottom);
- MoveTo(i+1,R.Top);
- LineTo(i+1,R.Bottom);
- Pen.Color := $00A0C0A0;
- MoveTo(i,R.Top);
- LineTo(i,R.Bottom);
- end
- else begin // horizontal
- R.Left := R.Left + i div 2 - 31;
- R.Right := R.Right - i div 2 + 31;
- j := R.Top + j div 2;
- MoveTo(R.Left, j-1);
- LineTo(R.Right,j-1);
- MoveTo(R.Left, j+1);
- LineTo(R.Right,j+1);
- Pen.Color := $00A0C0A0;
- MoveTo(R.Left, j);
- LineTo(R.Right,j);
- end;
- end;
- end;
- end;
-
- procedure TfrmInfoView.OpenCloseImageClick(Sender: TObject);
- var
- panel: TPanel;
- begin
- panel := ((Sender as TControl).Parent as TPanel);
- if panel.Height < 40 then begin // open it
- (Sender as TImage).Tag := 0;
- ImageList1.GetBitmap(0,(Sender as TImage).Picture.Bitmap);
- { Resize }
- if Sender = Image13 then begin
- PhoneAddressPanel.Align := alBottom;
- PhoneAddressPanel.Height := PhoneAddressPanel.Height - panel.Tag;
- Splitter5.Align := alBottom;
- panel.Align := alClient;
- end;
- if Sender = Image12 then begin
- BatteryPanel.Align := alBottom;
- BatteryPanel.Height := BatteryPanel.Height - panel.Tag;
- Splitter3.Align := alBottom;
- panel.Align := alClient;
- end;
- panel.Constraints.MaxHeight := 0;
- panel.Constraints.MinHeight := panel.Tag;
- { update view }
- if Sender = Image15 then
- BigImage.Visible := True;
- if Sender = Image10 then begin
- Splitter2.Visible := True;
- Splitter2.Top := InboxPanel.Top + InboxPanel.Height;
- end;
- if Sender = Image11 then begin
- Splitter4.Visible := True;
- Splitter4.Top := OuboxPanel.Top + OuboxPanel.Height;
- end;
- if (Sender = Image14) or (Sender = Image12) then
- if (Image14.Tag = 0) and (Image12.Tag = 0) then begin
- Splitter3.Visible := True;
- Splitter3.Top := BatteryPanel.Top-1;
- end;
- if (Sender = Image15) or (Sender = Image13) then
- if (Image15.Tag = 0) and (Image13.Tag = 0) then begin
- Splitter5.Visible := True;
- Splitter5.Top := PhoneAddressPanel.Top-1;
- end;
- end
- else begin // close it
- (Sender as TImage).Tag := 1;
- ImageList1.GetBitmap(1,(Sender as TImage).Picture.Bitmap);
- { Resize }
- panel.Tag := panel.Constraints.MinHeight;
- panel.Constraints.MinHeight := 39;
- panel.Constraints.MaxHeight := 39;
- if Sender = Image13 then begin
- panel.Align := alTop;
- Splitter5.Align := alTop;
- PhoneAddressPanel.Align := alClient;
- end;
- if Sender = Image12 then begin
- panel.Align := alTop;
- Splitter3.Align := alTop;
- BatteryPanel.Align := alClient;
- end;
- { update view }
- if Sender = Image15 then
- BigImage.Visible := False;
- if Sender = Image10 then
- Splitter2.Visible := False;
- if Sender = Image11 then
- Splitter4.Visible := False;
- if (Sender = Image14) or (Sender = Image12) then
- Splitter3.Visible := False;
- if (Sender = Image15) or (Sender = Image13) then
- Splitter5.Visible := False;
- end;
- end;
-
- procedure TfrmInfoView.linkShowSIMClick(Sender: TObject);
- begin
- Form1.Explorer.Selected := Form1.FNodeContactsSM;
- end;
-
- end.
-